package org.example.compare.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

@Data
public class SBoxData {
    long miBoxRecordId;             //筐记录id
    
    @JsonProperty("mBoxNum")
    String mBoxNum;                 //筐号
    
    @JsonProperty("mLocalOrderNum")
    String mLocalOrderNum;          //本地订单
    //String mPartName;               //部件名
    Long partId; //部件Id
    int miStartPartSeqNum;          //部件开始工序序号
    long miSizeId;                   //尺码id，在模板车和生成可进料记录里面要用到
    String sizeName;
    int miPlanCutStart;             //生成可进料记录里面要用到
    int miPlanCutEnd;               //生成可进料记录里面要用到
    int miPlanCnt;                  //生成可进料记录里面要用到
    @JsonProperty("mRealCutStr")
    String mRealCutStr;             //生成可进料记录里面要用到
    int miRealCnt;                  //实际件数
    @JsonProperty("mFeedTime")
    Date mFeedTime;                 //用来决定先后发筐
    int feedOrder;                  //进料批次顺序
    Long miBoxStatusRecordId;       //当前状态记录ID
    int miBoxStatus;                //筐状态
    @JsonProperty("mStatusInfo")
    String mStatusInfo;             //状态信息，可以直接赋值给其他成员如回库工位
    @JsonProperty("mBundleNum")
    String mBundleNum;              //扎号信息
    int miPartSeqNum;               //当前工序在部件里面的顺序，0表示还未分配需要做的工序
    boolean mbRedistributeFlag;     //重配标志
    int miCurRedistributePosition;  //当前重配的工位，以后不要发送给这个工位，CCurBox没有
    boolean mbReworkFlag;           //返工标志，有未完成的返工记录就有效，直到重新发送一次中查才清除
    long miCurReworkRecordId;        //当前返工记录id,返工发送之后有效，直到返工回库之后才=0
    long lineId;

    @JsonProperty("mDoneProcessSeq")
    Set<Integer> mDoneProcessSeq = new HashSet<>();     //已完成的部件工序序号，跳过生产认为是已完成的
    @JsonProperty("mDoneOrderProcessID")
    Set<Long> mDoneOrderProcessID = new HashSet<>();    //同上
    @JsonProperty("mCanDoProcessSeq")
    Set<Integer> mCanDoProcessSeq = new HashSet<>();    //可分配的部件工序序号，空表示没有工序或中断了
    @JsonProperty("mCanDoOrderProcessID")
    Set<Long> mCanDoOrderProcessID = new HashSet<>();   //同上
    @JsonProperty("mUnDoneProcessSeq")
    Set<Integer> mUnDoneProcessSeq = new HashSet<>();   //未完成的工序序号，从进料的开始序号的前一个序号算起
    @JsonProperty("mUnDoneProcessID")
    Set<Long> mUnDoneProcessID = new HashSet<>();       //同上

    //OrderDto pOrder;
    String orderId;

    public static int boxCmp(SBoxData b1, SBoxData b2) {
        if (b1.getMiSizeId() < b2.getMiSizeId()) {
            return 1;
        }
        if (b1.getMiSizeId() == b2.getMiSizeId()) {
            if (b1.getMiPlanCutStart() < b2.getMiPlanCutStart()) {
                return 1;
            }
        }
        if (b1.getMFeedTime().before(b2.getMFeedTime())) {
            return 1;
        }
        return -1;
    }

}